package chrono_views;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.ListModel;
import javax.swing.border.EmptyBorder;
import javax.swing.JDesktopPane;
import java.awt.SystemColor;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.border.TitledBorder;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.TextEvent;
import java.util.Iterator;

import javax.swing.AbstractListModel;
import javax.swing.UIManager;

import chrono_controller.Controller;
import javax.swing.JScrollPane;

public class VoitureIhmImpl extends JFrame {
	//private Controller controller_;

	private JPanel contentPane;
	private JTextField textFieldNumVoiture;
	private JTextField textField_CouleurVoiture;
	private JTextField textField_NbToursParRelais;
	private JTextField textField_NomPilote;
	private JTextField textField_CouleurCasque;




	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					VoitureIhmImpl frame = new VoitureIhmImpl();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public VoitureIhmImpl() {
		setResizable(false);
		setTitle("Cr\u00E9er une voiture");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 756, 527);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);

		JDesktopPane desktopPane = new JDesktopPane();
		desktopPane.setBackground(SystemColor.inactiveCaption);
		contentPane.add(desktopPane, BorderLayout.CENTER);

		JLabel lblNDeLa = new JLabel("N\u00B0 de la voiture :");
		lblNDeLa.setBounds(25, 80, 99, 14);
		desktopPane.add(lblNDeLa);

		textFieldNumVoiture = new JTextField();
		textFieldNumVoiture.setBounds(118, 77, 142, 20);
		desktopPane.add(textFieldNumVoiture);
		textFieldNumVoiture.setColumns(10);

		JLabel lblCouleur = new JLabel("Couleur :");
		lblCouleur.setBounds(25, 121, 46, 14);
		desktopPane.add(lblCouleur);

		textField_CouleurVoiture = new JTextField();
		textField_CouleurVoiture.setBounds(118, 118, 142, 20);
		desktopPane.add(textField_CouleurVoiture);
		textField_CouleurVoiture.setColumns(10);

		JLabel lblNombreDeTours = new JLabel("Nombre de tours par relais :");
		lblNombreDeTours.setBounds(361, 95, 142, 14);
		desktopPane.add(lblNombreDeTours);

		textField_NbToursParRelais = new JTextField();
		textField_NbToursParRelais.setBounds(531, 92, 166, 20);
		desktopPane.add(textField_NbToursParRelais);
		textField_NbToursParRelais.setColumns(10);

		JLabel lblCrationDuPilote = new JLabel("Cr\u00E9ation du pilote");
		lblCrationDuPilote.setFont(lblCrationDuPilote.getFont().deriveFont(lblCrationDuPilote.getFont().getStyle() & ~Font.ITALIC | Font.BOLD, lblCrationDuPilote.getFont().getSize() + 2f));
		lblCrationDuPilote.setBounds(25, 206, 126, 14);
		desktopPane.add(lblCrationDuPilote);

		JLabel lblNom = new JLabel("Nom :");
		lblNom.setBounds(25, 244, 46, 14);
		desktopPane.add(lblNom);




		JList list = new JList();
		list.setBounds(475, 269, 79, -23);
		desktopPane.add(list);



		final  DefaultListModel model = new DefaultListModel();
		final JList list_Pilotes = new JList(model);
		list_Pilotes.setVisibleRowCount(model.size());

		textField_NomPilote = new JTextField();
		textField_NomPilote.setBounds(118, 241, 142, 20);
		desktopPane.add(textField_NomPilote);
		textField_NomPilote.setColumns(10);

		JLabel lblCouleurDeCasque = new JLabel("Couleur de casque :");
		lblCouleurDeCasque.setBounds(10, 286, 112, 14);
		desktopPane.add(lblCouleurDeCasque);

		textField_CouleurCasque = new JTextField();
		textField_CouleurCasque.setBounds(118, 283, 142, 20);
		desktopPane.add(textField_CouleurCasque);
		textField_CouleurCasque.setColumns(10);

		final JButton btnModifierPilote = new JButton("Modifier");

		final JButton btnAjouterPilote = new JButton("Ajouter");
		btnAjouterPilote.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {


				int i = list_Pilotes.getSelectedIndex();
				String NomPilote = textField_NomPilote.getText();

				// Pour une premiere insertion 
				if(NomPilote != "" && !model.contains(NomPilote)  ){

					model.addElement(NomPilote);
					textField_NomPilote.setText("");
					textField_CouleurCasque.setText("");

					System.out.println("1 " + NomPilote);


				}

				String ValeurListe = (String) model.getElementAt(i);


				// Quand on modifie un element de la liste des pilotes

				if(NomPilote != ""){
					if(model.contains(NomPilote)  ){
						textField_NomPilote.setText(NomPilote);	
						String nom = textField_NomPilote.getText();


						if( nom !=""  && nom !=ValeurListe)
						{
							model.set(i, nom);
							System.out.println("2 "+ nom);
						}
						textField_NomPilote.setText("");
						textField_CouleurCasque.setText("");


						// Si la liste contient des doublons
						if(NomPilote.equals(nom)){

							model.removeElement(nom);

						} // end if doublons

					} // end if modification Element de la liste

				}// end if premiere insert
			}
		});
		btnAjouterPilote.setBounds(280, 257, 89, 23);
		desktopPane.add(btnAjouterPilote);

		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(520, 206, 166, 122);
		desktopPane.add(scrollPane);


		list_Pilotes.setBorder(new TitledBorder(null, "Liste des pilotes", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		scrollPane.setViewportView(list_Pilotes);


		btnModifierPilote.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				int i = list_Pilotes.getSelectedIndex();
				String texte = (String) model.getElementAt(i);
				textField_NomPilote.setText(texte);
					
			}
		});
		btnModifierPilote.setBounds(452, 353, 89, 23);
		desktopPane.add(btnModifierPilote);

		JButton btnSupprimerPilote = new JButton("Supprimer");
		btnSupprimerPilote.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				int i = list_Pilotes.getSelectedIndex();
				String NomPilote = (String) model.getElementAt(i);
				//String CouleurPilote = textField_CouleurCasque.getText();
				model.removeElement(NomPilote);
				//model.removeElement(CouleurPilote);

			}
		});
		btnSupprimerPilote.setBounds(568, 353, 89, 23);
		desktopPane.add(btnSupprimerPilote);

		JButton btnSauvegarderVoiture = new JButton("Sauvegarder");
		btnSauvegarderVoiture.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				if(  textFieldNumVoiture.getText().isEmpty())
				{
					JPanel panel = new JPanel();
					JOptionPane.showMessageDialog(panel, "Vueillez remplir tous les champs", "Erreur ", JOptionPane.ERROR_MESSAGE);
				}  else{
					dispose();
					EvenementIhmImpl event = new  EvenementIhmImpl();
					event.show();

				}

			}
		});
		btnSauvegarderVoiture.setBounds(177, 429, 135, 23);
		desktopPane.add(btnSauvegarderVoiture);

		JButton btnImprimerVoiture = new JButton("Imprimer");
		btnImprimerVoiture.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			}
		});
		btnImprimerVoiture.setBounds(349, 429, 89, 23);
		desktopPane.add(btnImprimerVoiture);


	}
}
